package com.lottery.material.dao.circle;

import com.lottery.material.pojo.circle.CircleMemberInfo;
import com.lottery.material.pojo.page.Page;
import com.lottery.material.pojo.page.PageData;
import com.lottery.material.pojocustom.circle.CircleMemberInfoCustom;
import com.lottery.material.vo.portal.circle.CircleInfoVo;
import com.lottery.material.vo.portal.circle.MemberCircleVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @description 圈子成员Mapper
 * @author rambo
 * @date 2019年4月11日 下午9:23:39
 */
@SuppressWarnings("JavaDoc")
public interface CircleMemberInfoMapper {
	
    Integer deleteByPrimaryKey(Integer id);

    Integer insert(CircleMemberInfo record);

    Integer insertSelective(CircleMemberInfo record);

    CircleMemberInfo selectByPrimaryKey(Integer id);

    Integer updateByPrimaryKeySelective(CircleMemberInfo record);

    Integer updateByPrimaryKey(CircleMemberInfo record);

    /**
     * description：根据用户id查询圈子成员列表
     * user 朱正磊
     * time 2019-04-22 15:11
     * @param userId 用户ID
     * @return 返回用户id查询圈子成员列表
     */
    List<CircleMemberInfo> findByUserId(String userId);

    /**
     * description：根据圈子ID和圈内等级查询圈子成员列表
     * user 朱正磊
     * time 2019-04-22 15:57
     * @param circleId 圈子ID
     * @param rank 圈内等级
     * @return 返回圈子成员列表
     */
    List<CircleMemberInfo> findByCircleIdAndRank(@Param("circleId") Integer circleId, @Param("rank") Integer rank);

    /**
     * description：查询扩展类分页列表
     * user 朱正磊
     * time 2019-04-17 17:01
     * @param page 分页对象
     * @return 返回扩展类分页列表数据
     */
    List<CircleMemberInfoCustom> findCustomListPage(Page page);

    /**
     * description：根据主键查询唯一扩展类数据
     * user 朱正磊
     * time 2019-04-17 17:03
     * @param id 主键
     * @return 返回唯一扩展类数据
     */
    CircleMemberInfoCustom findCustomById(Integer id);

    /**
     * description：批量禁言、取消禁言
     * user 朱正磊
     * time 2019-04-24 16:37
     * @param data 主键集合以及是否禁言状态Map
     * @return 返回持久化操作数据库状态值
     */
    Integer updateBatchBanOrNot(Map<String, Object> data);

    /**
     * @Author: houjie
     * @Description: 根据用户userId及圈子id获取圈成员信息
     * @Date: 2019/4/9 15:52
     */
    CircleMemberInfo findByUserIdAndCircleId(PageData pd);

    /**
     * description: 根据用户id查询关注圈子数
     * author sunny
     * createDate 2019-04-15 下午 4:18
     * @param userId
     * @return
     */
    Integer findCountByUserId(String userId);

    /**
     * 查询个人圈子列表
     * @param map
     * @return
     */
    List<MemberCircleVo> findCircleListByUserId(@Param("params") Map<String,Object> map);

    /**
     * description: 根据用户id和圈子id更新圈内等级
     * author sunny
     * createDate 2019-04-20 下午 1:24
     * @param record
     * @return
     */
    Integer updateRankByUserIdAndCircleId(CircleMemberInfo record);

    /**
     * @Author 肖拔赟
     * @Description 5.1	获取我的关注圈子列表接口
     * @Date Created on 2019-04-19 15:08
     * @param
     * @return
     */
    List<CircleInfoVo> findAttentionByUserId(String userId);

    /**
     * @Author 肖拔赟
     * @Description 5.1	获取圈子粉丝Top10
     * @Date Created on 2019-04-19 15:08
     * @param
     * @return
     */
    List<Map<String, String>> getFansTop10(String circleId);

}
